﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using BemEstarEmprego.DALL;
using BemEstarEmprego.Entities;


namespace BemEstarEmprego.BLL
{
	public class EmpresaBLL
	{

		/// <summary>
		/// Utilizado para testar o retorno de uma operação
		/// </summary>
		Int32 retorno;

		/// <summary>
		/// Salva o registro de uma empresa e o endereço
		/// </summary>
		/// <param name="_empresa"></param>
		/// <param name="_endereco"></param>
		/// <returns></returns>
		public Boolean Save(empresa _empresa)
		{
			using (var context = new bemestar_empregoEntities())
			{
				endereco enderecoNew = new endereco();

				try
				{
					//USUARIO
					_empresa.usuario = new usuario() { LOGIN = _empresa.usuario.LOGIN, SENHA = _empresa.usuario.SENHA };
					context.usuario.Attach(_empresa.usuario);

					//TIPO USUARIO
					_empresa.usuario.tipo_usuario = new UserQueries().BuscaTipoUsuario(3, context);

					//ENDERECO
					context.endereco.Attach(_empresa.endereco);

					context.ObjectStateManager.ChangeObjectState(_empresa, System.Data.EntityState.Added);
					context.ObjectStateManager.ChangeObjectState(_empresa.usuario, System.Data.EntityState.Added);
					context.ObjectStateManager.ChangeObjectState(_empresa.endereco, System.Data.EntityState.Added);

					context.empresa.AddObject(_empresa);

					return context.SaveChanges() > 0;
				}
				catch (Exception ex)
				{
					var msg = ex.Message;
				}
			}
			return true;
		}

		public static empresa GetById(Int64? id)
		{
			using (var context = new bemestar_empregoEntities())
			{
				return context.empresa.FirstOrDefault(x => x.ID == id);
			}
		}

		public bool UpdateEmpresa(empresa _empresa)
		{

			try
			{

				using (bemestar_empregoEntities context = new bemestar_empregoEntities())
				{
					empresa editEmpresa = context.empresa.Where(x => x.ID == _empresa.ID).FirstOrDefault<empresa>();

					editEmpresa.RAZAO_SOCIAL = _empresa.RAZAO_SOCIAL;
					editEmpresa.CNPJ = _empresa.CNPJ;
					editEmpresa.TELEFONE = _empresa.TELEFONE;
					editEmpresa.FAX = _empresa.FAX;

					retorno = context.SaveChanges(System.Data.Objects.SaveOptions.None);
					return retorno > 1;
				}
			}
			catch (Exception)
			{
				return false;
			}
		}

		public bool DesativarAtivar(empresa _empresa)
		{
			try
			{

				using (bemestar_empregoEntities context = new bemestar_empregoEntities())
				{
					empresa editEmpresa = context.empresa.Where(x => x.ID == _empresa.ID).FirstOrDefault<empresa>();
					editEmpresa.ATIVO = false;

					retorno = context.SaveChanges(System.Data.Objects.SaveOptions.None);
					return retorno > 1;
				}
			}
			catch (Exception)
			{
				return false;
			}
		}


	}
}
